import { getStorageItem, setStorageItem } from '../../../../../utils/storage';
import { updateCardInfo } from '../../../../../api/card.js';

Page({
  data: {
    rank: '',
    city: '',
    province: '',
    country: '',
  },
  onLoad(options) {
    // 初始化rank的值
    this.setData({
      rank: options.rank,
    });
    // 从缓存中获取排名信息
    this.setData({
      city: getStorageItem('rank_city'),
      province: getStorageItem('rank_province'),
      country: getStorageItem('rank_country'),
    });
  },
  onShow() {},
  async showRank(e) {
    const key = e.target.dataset.key;
    const target = e.detail.value;
    // 判断开关状态
    if (target) {
      // 开启
      this.setData({
        rank: key,
      });
    } else {
      this.setData({
        rank: '',
      });
    }

    // 修改卡片数据
    await this.updateCardInfo();
  },
  async updateCardInfo() {
    // 获取缓存中的所有卡片数据
    const card_json = getStorageItem('cardInfoList');
    // 将json数据转化为对象数组
    const cardInfoList = JSON.parse(card_json);
    // 判断数组长度是否大于0，是则查找主持人卡片对应的数组索引值；否则直接新增
    let targetIndex = 0;
    if (cardInfoList.length > 0) {
      targetIndex = cardInfoList.findIndex((item) => {
        if (item.type === 'hostCard') {
          return true;
        }
        return false;
      });
      // 判断是否有当前的卡片数据
      if (targetIndex >= 0) {
        // 有数据，则替换对应索引的数据
        // 1.获取原有的卡片数据(浅拷贝)
        const current = { ...cardInfoList[targetIndex] };
        // 2.修改对应下标的数据
        cardInfoList[targetIndex] = {
          ...current,
          rank: this.data.rank,
        };
      } else {
        // 没有对应卡片的数据进行新增
        cardInfoList.push({
          type: 'hostCard',
          rank: this.data.rank,
          introduce: '我是本场互动主持人，有需要联系我',
          switch: '0',
          yuehunSwitch: '0',
          textColor: '',
        });
      }
    } else {
      // 没有卡片数据，直接新增
      cardInfoList.push({
        type: 'hostCard',
        introduce: '我是本场互动主持人，有需要联系我',
        rank: this.data.rank,
        switch: '0',
        yuehunSwitch: '0',
        textColor: '',
      });
    }

    // 将处理结果转化为JSON
    const target = JSON.stringify(cardInfoList);
    // 更新缓存的数据
    setStorageItem('cardInfoList', target);
    // 调用更改接口
    const { data: res } = await updateCardInfo(target);
    if (String(res) === 'success') {
      wx.showToast({
        icon: 'none',
        title: '操作成功',
        success: () => {
          // 设置更新提示状态
          wx.setStorageSync('updateHostCard', true);
        },
      });
    } else {
      wx.showToast({
        icon: 'none',
        title: '操作失败',
      });
    }
  },
});
